package v1

import "time"

type CurrentOrderInfoVo struct {
	OrderID           int64 `json:"orderId"`
	Status            int   `json:"status"`
	IsHasCurrentOrder bool  `json:"isHasCurrentOrder"`
}

// ExpectOrderVo 预估订单实体
type ExpectOrderVo struct {
	DrivingLineVo   DrivingLineVo   `json:"drivingLineVo"`
	FeeRuleResponse FeeRuleResponse `json:"feeRuleResponseVo"`
}

// SubmitOrderForm 提交订单表单
type SubmitOrderForm struct {
	CustomerId          int64   `json:"customerId"`          // 乘客id
	StartLocation       string  `json:"startLocation"`       // 起始地点
	StartPointLongitude float64 `json:"startPointLongitude"` // 起始地点经度
	StartPointLatitude  float64 `json:"startPointLatitude"`  // 起始点纬度
	EndLocation         string  `json:"endLocation"`         // 结束地点
	EndPointLongitude   float64 `json:"endPointLongitude"`   // 结束地点经度
	EndPointLatitude    float64 `json:"endPointLatitude"`    // 结束地点纬度
	FavourFee           float64 `json:"favourFee"`           // 顾客好处费
}

// OrderInfoForm 订单信息表单
type OrderInfoForm struct {
	CustomerID          int64   `json:"customerId"`          // 客户ID
	OrderNo             string  `json:"orderNo"`             // 订单号
	StartLocation       string  `json:"startLocation"`       // 起始地点
	StartPointLongitude float64 `json:"startPointLongitude"` // 起始地点经度
	StartPointLatitude  float64 `json:"startPointLatitude"`  // 起始点纬度
	EndLocation         string  `json:"endLocation"`         // 结束地点
	EndPointLongitude   float64 `json:"endPointLongitude"`   // 结束地点经度
	EndPointLatitude    float64 `json:"endPointLatitude"`    // 结束地点纬度
	FavourFee           float64 `json:"favourFee"`           // 顾客好处费
	Remark              string  `json:"remark"`              // 订单备注信息
	ExpectAmount        float64 `json:"expectAmount"`        // 预估订单费用
	ExpectDistance      float64 `json:"expectDistance"`      // 预估里程
}

type OrderTask struct {
	OrderID             int64     `json:"orderId"`             // 订单id
	StartLocation       string    `json:"startLocation"`       // 起始地点
	StartPointLongitude float64   `json:"startPointLongitude"` // 起始地点经度
	StartPointLatitude  float64   `json:"startPointLatitude"`  // 起始点纬度
	EndLocation         string    `json:"endLocation"`         // 结束地点
	EndPointLongitude   float64   `json:"endPointLongitude"`   // 结束地点经度
	EndPointLatitude    float64   `json:"endPointLatitude"`    // 结束地点纬度
	ExpectAmount        float64   `json:"expectAmount"`        // 预估订单金额
	ExpectDistance      float64   `json:"expectDistance"`      // 预估里程
	ExpectTime          float64   `json:"expectTime"`          // 预估时间
	FavourFee           float64   `json:"favourFee"`           // 顾客好处费
	CreateTime          time.Time `json:"createTime"`          // 下单时间
}

type OrderData struct {
	OrderID        int64     `json:"orderId"`        // 订单id
	StartLocation  string    `json:"startLocation"`  // 起始地点
	EndLocation    string    `json:"endLocation"`    // 结束地点
	ExpectAmount   float64   `json:"expectAmount"`   // 预估订单金额
	ExpectDistance float64   `json:"expectDistance"` // 预估里程
	Distance       float64   `json:"distance"`       // 到你的距离
	ExpectTime     float64   `json:"expectTime"`     // 预估时间
	FavourFee      float64   `json:"favourFee"`      // 顾客好处费
	CreateTime     time.Time `json:"createTime"`     // 下单时间
}

// OrderBillVo 订单账单信息结构体
type OrderBillVo struct {
	TotalAmount             float64 `json:"totalAmount"`             // 总金额
	PayAmount               float64 `json:"payAmount"`               // 应付款金额
	DistanceFee             float64 `json:"distanceFee"`             // 里程费
	WaitFee                 float64 `json:"waitFee"`                 // 等时费用
	TollFee                 float64 `json:"tollFee"`                 // 路桥费
	ParkingFee              float64 `json:"parkingFee"`              // 停车费
	OtherFee                float64 `json:"otherFee"`                // 其他费用
	LongDistanceFee         float64 `json:"longDistanceFee"`         // 远程费
	FavourFee               float64 `json:"favourFee"`               // 顾客好处费
	RewardFee               float64 `json:"rewardFee"`               // 系统奖励费
	CouponAmount            float64 `json:"couponAmount"`            // 优惠券金额
	BaseDistance            float64 `json:"baseDistance"`            // 基础里程（公里）
	BaseDistanceFee         float64 `json:"baseDistanceFee"`         // 基础里程费
	ExceedDistance          float64 `json:"exceedDistance"`          // 超出基础里程的里程（公里）
	ExceedDistancePrice     float64 `json:"exceedDistancePrice"`     // 超出基础里程的价格
	BaseWaitMinute          int     `json:"baseWaitMinute"`          // 基础等时分钟
	ExceedWaitMinute        int     `json:"exceedWaitMinute"`        // 超出基础等时的分钟
	ExceedWaitMinutePrice   float64 `json:"exceedWaitMinutePrice"`   // 超出基础分钟的价格
	BaseLongDistance        float64 `json:"baseLongDistance"`        // 基础远途里程（公里）
	ExceedLongDistance      float64 `json:"exceedLongDistance"`      // 超出基础远程里程的里程
	ExceedLongDistancePrice float64 `json:"exceedLongDistancePrice"` // 超出基础远程里程的价格
}

// OrderProfitsharingVo 分账信息结构体
type OrderProfitsharingVo struct {
	OrderAmount     float64 `json:"orderAmount"`     // 订单金额
	PaymentRate     float64 `json:"paymentRate"`     // 微信支付平台费率
	PaymentFee      float64 `json:"paymentFee"`      // 微信支付平台费用
	DriverTaxRate   float64 `json:"driverTaxRate"`   // 代驾司机代缴个税税率
	DriverTaxFee    float64 `json:"driverTaxFee"`    // 代驾司机税率支出费用
	PlatformIncome  float64 `json:"platformIncome"`  // 平台分账收入
	DriverIncome    float64 `json:"driverIncome"`    // 司机分账收入
	Status          int     `json:"status"`          // 分账状态，1未分账，2已分账
}

// OrderInfoVo 订单信息视图对象
type OrderInfoVo struct {
	OrderID              int64                `json:"orderId"`              // 订单id
	OrderNo              string               `json:"orderNo"`              // 订单号
	StartLocation        string               `json:"startLocation"`        // 起始地点
	StartPointLongitude  float64              `json:"startPointLongitude"`  // 起始地点经度
	StartPointLatitude   float64              `json:"startPointLatitude"`   // 起始点纬度
	EndLocation          string               `json:"endLocation"`          // 结束地点
	EndPointLongitude    float64              `json:"endPointLongitude"`    // 结束地点经度
	EndPointLatitude     float64              `json:"endPointLatitude"`     // 结束地点纬度
	Status               int                  `json:"status"`               // 订单状态
	CreateTime           time.Time            `json:"createTime"`           // 创建时间
	OrderBillVo          *OrderBillVo          `json:"orderBillVo"`          // 订单账单信息
	OrderProfitsharingVo *OrderProfitsharingVo `json:"orderProfitsharingVo"` // 分账信息
	DriverInfoVo         *DriverInfoVo         `json:"driverInfoVo"`         // 司机信息
	CustomerInfoVo       *CustomerInfoVo       `json:"customerInfoVo"`       // 乘客信息
}

type UpdateOrderCartForm struct {
	OrderID      int64  `json:"orderId" binding:"required"` // 订单ID
	DriverID     int64  `json:"driverId"`                  // 司机ID
	CarLicense   string `json:"carLicense" binding:"required"` // 车牌号
	CarType      string `json:"carType"`                     // 车型
	CarFrontURL  string `json:"carFrontUrl" binding:"required"` // 司机到达拍照：车前照
	CarBackURL   string `json:"carBackUrl" binding:"required"`  // 司机到达拍照：车后照
}

type OrderMonitorForm struct {
	OrderID      int64   `json:"orderId"`
	Content      string  `json:"content"`
}

// UpdateOrderBillForm 订单费用表单
type UpdateOrderBillForm struct {
	OrderID               int64   `json:"orderId"`               // 订单ID
	DriverID              int64   `json:"driverId"`              // 司机ID
	RealDistance          float64 `json:"realDistance"`          // 实际里程
	TollFee               float64 `json:"tollFee"`               // 路桥费
	ParkingFee            float64 `json:"parkingFee"`            // 停车费
	OtherFee              float64 `json:"otherFee"`              // 其他费用
	FavourFee             float64 `json:"favourFee"`             // 顾客好处费
	RewardRuleID          int64   `json:"rewardRuleId"`          // 奖励规则ID
	RewardAmount          float64 `json:"rewardAmount"`          // 奖励金额
	FeeRuleID             int64   `json:"feeRuleId"`             // 费用规则ID
	TotalAmount           float64 `json:"totalAmount"`           // 总金额
	BaseDistance          float64 `json:"baseDistance"`          // 基础里程（公里）
	BaseDistanceFee       float64 `json:"baseDistanceFee"`       // 基础里程费（元）
	ExceedDistance        float64 `json:"exceedDistance"`        // 超出基础里程的里程（公里）
	ExceedDistancePrice   float64 `json:"exceedDistancePrice"`   // 超出基础里程的价格（元/公里）
	BaseWaitMinute        int     `json:"baseWaitMinute"`        // 基础等时分钟（分钟）
	ExceedWaitMinute      int     `json:"exceedWaitMinute"`      // 超出基础等时的分钟（分钟）
	ExceedWaitMinutePrice float64 `json:"exceedWaitMinutePrice"` // 超出基础分钟的价格（元/分钟）
	BaseLongDistance      float64 `json:"baseLongDistance"`      // 基础远途里程（公里）
	ExceedLongDistance    float64 `json:"exceedLongDistance"`    // 超出基础远程里程的里程（公里）
	ExceedLongDistancePrice float64 `json:"exceedLongDistancePrice"` // 超出基础远程里程的价格（元/公里）
	ProfitsharingRuleID   int64   `json:"profitsharingRuleId"`   // 分账规则ID
	OrderAmount           float64 `json:"orderAmount"`           // 订单金额
	PaymentRate           float64 `json:"paymentRate"`           // 微信支付平台费率
	PaymentFee            float64 `json:"paymentFee"`            // 微信支付平台费用
	DriverTaxRate         float64 `json:"driverTaxRate"`         // 代驾司机代缴个税税率
	DriverTaxFee          float64 `json:"driverTaxFee"`          // 代驾司机税率支出费用
	PlatformIncome        float64 `json:"platformIncome"`        // 平台分账收入
	DriverIncome          float64 `json:"driverIncome"`          // 司机分账收入
}

// OrderFeeForm 订单费用表单
type OrderFeeForm struct {
	OrderID    int64   `json:"orderId"`    // 订单ID
	DriverID   int64   `json:"driverId"`   // 司机ID
	TollFee    float64 `json:"tollFee"`    // 路桥费
	ParkingFee float64 `json:"parkingFee"` // 停车费
	OtherFee   float64 `json:"otherFee"`   // 其他费用
}

// OrderStrFeeForm 订单费用表单
type OrderStrFeeForm struct {
	OrderID    int64   `json:"orderId"`    // 订单ID
	DriverID   int64   `json:"driverId"`   // 司机ID
	TollFee    string `json:"tollFee"`    // 路桥费
	ParkingFee string `json:"parkingFee"` // 停车费
	OtherFee   string `json:"otherFee"`   // 其他费用
}

// OrderListVo 订单列表视图对象
type OrderListVo struct {
	ID            int64     `json:"id"`            // id
	OrderNo       string    `json:"orderNo"`       // 订单号
	StartLocation string    `json:"startLocation"` // 起始地点
	EndLocation   string    `json:"endLocation"`   // 结束地点
	Amount        float64   `json:"amount"`        // 订单金额
	CreateTime    time.Time `json:"createTime"`    // 下单时间
	Status        int       `json:"status"`        // 订单状态
}

// OrderListPageVo 分页视图对象
type OrderListPageVo struct {
	Page    int64         `json:"page"`    // 当前页码
	Limit   int64         `json:"limit"`   // 每页记录数
	Pages   int64         `json:"pages"`   // 总页数
	Total   int64         `json:"total"`   // 总条目数
	Records []*OrderListVo `json:"records"` // 数据列表
}

// NewOrderListPageVo 构造函数
func NewOrderListPageVo(records []*OrderListVo, pages, total int64) *OrderListPageVo {
	return &OrderListPageVo{
		Records: records,
		Pages:   pages,
		Total:   total,
	}
}

// OrderPayVo 订单支付视图对象
type OrderPayVo struct {
	OrderId       int64     `json:"orderId"`       // 订单id
	CustomerId    int64     `json:"customerId"`    // 乘客id
	DriverId      int64     `json:"driverId"`      // 司机id
	OrderNo       string    `json:"orderNo"`       // 订单号
	PayAmount     float64   `json:"payAmount"`     // 支付金额
	CouponAmount  float64   `json:"couponAmount"`  // 使用的优惠券金额
	StartLocation string    `json:"startLocation"` // 起始地点
	EndLocation   string    `json:"endLocation"`   // 结束地点
	Content       string    `json:"content"`       // 交易内容
	Status        int       `json:"status"`        // 订单状态
}
